let
    GetDueDay = (入职日期 as nullable datetime, 离职时间 as nullable datetime, 当月的日期 as date, 放假日期表 as table) as table =>
        let
            当月日期仅日期 = Date.From(当月的日期),
            // 获取当月的第一天和最后一天
            月份最后一天 = DateTime.From( Date.EndOfMonth(当月日期仅日期)),

            考勤日期表 = 生成考勤日期(入职日期, 离职时间, 当月的日期, 放假日期表),
            满勤打卡天数 = Table.RowCount(考勤日期表),
            工作时间 = Duration.Days(Duration.From((if 离职时间 = null then 月份最后一天 else 离职时间) - 入职日期)),
            满勤工资天数 =
                if
                    // 当月入职
                    Date.Year(DateTime.From(入职日期)) = Date.Year(当月的日期)
                    and Date.Month(DateTime.From(入职日期)) = Date.Month(当月的日期)
                then
                    if  工作时间 < 2 then
                        满勤打卡天数 + 工作时间
                    else
                        满勤打卡天数 + 2
                else
                    满勤打卡天数,
            结果表 = Table.FromRecords({[满勤打卡天数 = 满勤打卡天数, 满勤工资天数 = 满勤工资天数,说明="说明"]})
        in
            结果表
in
    GetDueDay